home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / genderte.i < prev    next >
Text File  |  1997-10-26  |  10KB  |  251 lines

  1. IMPLEMENTATION MODULE GenderTest;
  2.  
  3. IMPORT AssFuncs;
  4.  
  5. PROCEDURE SexTest (REF name: ARRAY OF CHAR; VAR sex: Sex);
  6. (* Liefert zurck, ob ein Name weiblich oder m„nnlich ist. 
  7.  *)
  8.   CONST maxTwo = 80;
  9.   CONST maxThree = 23;
  10.   CONST maxExc = 50;
  11.  
  12.   TYPE twoChar = ARRAY [0..3] OF CHAR;
  13.        nameSex = RECORD 
  14.                         name: twoChar;
  15.                         sex : Sex;
  16.                  END;
  17.        exceptName = ARRAY [0..20] OF CHAR;
  18.        exceptSex = RECORD
  19.                         name: exceptName;
  20.                         sex : Sex;
  21.                    END;
  22.        twoNames = ARRAY [0..maxTwo-1] OF nameSex;
  23.        threeNames = ARRAY [0..maxThree-1] OF nameSex;
  24.        exceptsArray = ARRAY [0..maxExc-1] OF exceptSex;
  25.   CONST two = twoNames{nameSex{"rk", male  },
  26.                        nameSex{"an", male  },
  27.                        nameSex{"en", male  },
  28.                        nameSex{"al", male  },
  29.                        nameSex{"re", male  },
  30.                        nameSex{"r‚", male  },
  31.                        nameSex{"ne", female  },
  32.                        nameSex{"n‚", male  },
  33.                        nameSex{"on", male  },
  34.                        nameSex{"ip", male  },
  35.                        nameSex{"us", male  },
  36.                        nameSex{"el", male  },
  37.                        nameSex{"ji", male  },
  38.                        nameSex{"lf", male  },
  39.                        nameSex{"ng", male  },
  40.                        nameSex{"ks", male  },
  41.                        nameSex{"im", male  },
  42.                        nameSex{"in", male  },
  43.                        nameSex{"te", female}, 
  44.                        nameSex{"it", female}, 
  45.                        nameSex{"ni", female}, 
  46.                        nameSex{"li", female}, 
  47.                        nameSex{"ie", female}, 
  48.                        nameSex{"ls", male  },
  49.                        nameSex{"ly", male  },
  50.                        nameSex{"id", male  },
  51.                        nameSex{"ld", male  },
  52.                        nameSex{"ce", female},
  53.                        nameSex{"ze", female},
  54.                        nameSex{"ed", male  },
  55.                        nameSex{"id", male  },
  56.                        nameSex{"rn", male  },
  57.                        nameSex{"ph", male  },
  58.                        nameSex{"rd", male  },
  59.                        nameSex{"tz", male  },
  60.                        nameSex{"rt", male  },
  61.                        nameSex{"st", male  },
  62.                        nameSex{"tl", female}, 
  63.                        nameSex{"ll", female}, 
  64.                        nameSex{"nd", male  },
  65.                        nameSex{"nz", male  },
  66.                        nameSex{"ai", male  },
  67.                        nameSex{"av", male  },
  68.                        nameSex{"af", male  },
  69.                        nameSex{"ut", male  },
  70.                        nameSex{"pf", male  },
  71.                        nameSex{"is", male  },
  72.                        nameSex{"am", male  },
  73.                        nameSex{"ev", male  },
  74.                        nameSex{"ew", male  },
  75.                        nameSex{"dt", male  },
  76.                        nameSex{"ti", male  },
  77.                        nameSex{"ge", male  },
  78.                        nameSex{"ud", female},
  79.                        nameSex{"un", female},
  80.                        nameSex{"pp", male  },
  81.                        nameSex{"di", male  },
  82.                        nameSex{"ck", male  },
  83.                        nameSex{"ad", male  },
  84.                        nameSex{"nn", male  },
  85.                        nameSex{"as", male  },
  86.                        nameSex{"rs", male  },
  87.                        nameSex{"kt", male  },
  88.                        nameSex{"ns", male  },
  89.                        nameSex{"ik", male  },
  90.                        nameSex{"ic", male  },
  91.                        nameSex{"rc", male  },
  92.                        nameSex{"rl", male  },
  93.                        nameSex{"nk", male  },
  94.                        nameSex{"lm", male  },
  95.                        nameSex{"ot", male  },
  96.                        nameSex{"ig", male  },
  97.                        nameSex{"aw", male  },
  98.                        nameSex{"ul", male  },
  99.                        nameSex{"mm", male  },
  100.                        nameSex{"om", male  },
  101.                        nameSex{"ry", male  },
  102.                        nameSex{"we", male  },
  103.                        nameSex{"ny", male  },
  104.                        nameSex{"rg", male  }
  105.                       };
  106.     three = threeNames{nameSex{"ild", female},
  107.                        nameSex{"rut", female},
  108.                        nameSex{"lja", male  },
  109.                        nameSex{"ich", male  },
  110.                        nameSex{"rdt", male  },
  111.                        nameSex{"rit", male  },
  112.                        nameSex{"oud", male  },
  113.                        nameSex{"shi", male  },
  114.                        nameSex{"rid", female},
  115.                        nameSex{"rne", male},
  116.                        nameSex{"uth", male  },
  117.                        nameSex{"eth", female},
  118.                        nameSex{"nes", male  },
  119.                        nameSex{"hem", male  },
  120.                        nameSex{"ies", female},
  121.                        nameSex{"yes", male  },
  122.                        nameSex{"ree", male  },
  123.                        nameSex{"ike", male  },
  124.                        nameSex{"uez", male  },
  125.                        nameSex{"ali", male  },
  126.                        nameSex{"nee", female},
  127.                        nameSex{"tel", female},
  128.                        nameSex{"got", female}
  129.                       };
  130.     excepts = exceptsArray{
  131.                        exceptSex{"Ole", male},
  132.                        exceptSex{"Esther", female},
  133.                        exceptSex{"Dagmar", female},
  134.                        exceptSex{"Rike", female},
  135.                        exceptSex{"Ulrike", female},
  136.                        exceptSex{"Jennifer", female},
  137.                        exceptSex{"Malte", male},
  138.                        exceptSex{"Maren", female},
  139.                        exceptSex{"Micha", male},
  140.                        exceptSex{"Susan", female},
  141.                        exceptSex{"Ann", female},
  142.                        exceptSex{"Hotte", male},
  143.                        exceptSex{"Ines", female},
  144.                        exceptSex{"Inez", female},
  145.                        exceptSex{"Toni", male},
  146.                        exceptSex{"Knud", male},
  147.                        exceptSex{"Till", male},
  148.                        exceptSex{"Mika", male},
  149.                        exceptSex{"Janne", male},
  150.                        exceptSex{"Willi", male},
  151.                        exceptSex{"Toni", male},
  152.                        exceptSex{"Eddi", male},
  153.                        exceptSex{"Jose", male},
  154.                        exceptSex{"Veli", male},
  155.                        exceptSex{"Ulli", male},
  156.                        exceptSex{"Edi", male},
  157.                        exceptSex{"Sami", male},
  158.                        exceptSex{"Ronnie", male},
  159.                        exceptSex{"Joe", male},
  160.                        exceptSex{"Zoe", female},
  161.                        exceptSex{"Ilja", male},
  162.                        exceptSex{"Hauke", male},
  163.                        exceptSex{"Doris", female},
  164.                        exceptSex{"Boris", male},
  165.                        exceptSex{"Kirsten", female},
  166.                        exceptSex{"Kerstin", female},
  167.                        exceptSex{"Kristin", female},
  168.                        exceptSex{"S”nke", male},
  169.                        exceptSex{"Soenke", male},
  170.                        exceptSex{"Soehnke", male},
  171.                        exceptSex{"S”hnke", male},
  172.                        exceptSex{"Almut", female},
  173.                        exceptSex{"Allmut", female},
  174.                        exceptSex{"Almuth", female},
  175.                        exceptSex{"Allmuth", female},
  176.                        exceptSex{"Carmen", female},
  177.                        exceptSex{"Gianni", male},
  178.                        exceptSex{"Altfrid", male},
  179.                        exceptSex{"Giovanni", male},
  180.                        exceptSex{"Giuseppe", male}
  181.                        };
  182.  
  183.   VAR i : INTEGER;
  184.       len: CARDINAL;
  185.       lastCh : CHAR;
  186.       lastTwo: ARRAY[0..3] OF CHAR;
  187.       lastThree: ARRAY[0..3] OF CHAR;
  188.       found : BOOLEAN;
  189. BEGIN
  190.   sex := unknown;
  191.   (* Variablen initialisieren *)
  192.   
  193.   len := LENGTH (name);
  194.   IF len < 2 THEN RETURN END;
  195.   lastCh := CAP(name[len-1]);
  196.   lastTwo[2] := 0C;
  197.   lastTwo[1] := lastCh;
  198.   lastTwo[0] := CAP(name[len-2]);
  199.   
  200.   IF len > 2
  201.   THEN
  202.     lastThree[3] := 0C;
  203.     lastThree[2] := lastCh;
  204.     lastThree[1] := CAP(name[len-2]);
  205.     lastThree[0] := CAP(name[len-3]);
  206.   END;
  207.   (* Erstmal einbuchstabige Abfragen *)
  208.   CASE lastCh OF
  209.     "A" : sex := female; |
  210.     "R" : sex := male; |
  211.     "O" : sex := male; |
  212.     "E" : sex := female; |
  213.     "Y" : sex := female; |
  214.     "F" : sex := male; |
  215.     "X" : sex := male; |
  216.   ELSE
  217.   END;
  218.   i := 0;
  219.   found := FALSE;
  220.   WHILE (i < maxTwo) & ~found DO
  221.     IF AssFuncs.StrIequal (lastTwo, two[i].name)
  222.     THEN
  223.       sex := two[i].sex;
  224.       found := TRUE;
  225.     END;
  226.     INC (i);
  227.   END;
  228.   i := 0;
  229.   found := FALSE;
  230.   WHILE (i < maxThree) & ~found DO
  231.     IF AssFuncs.StrIequal (three[i].name, lastThree)
  232.     THEN
  233.       sex := three[i].sex;
  234.       found := TRUE;
  235.     END;
  236.     INC (i);
  237.   END;
  238.   i := 0;
  239.   found := FALSE;
  240.   WHILE (i < maxExc) & ~found DO
  241.     IF AssFuncs.StrIequal (excepts[i].name, name)
  242.     THEN
  243.       sex := excepts[i].sex;
  244.       found := TRUE;
  245.     END;
  246.     INC (i);
  247.   END;
  248. END SexTest;
  249.  
  250. END GenderTest.
  251.